import { InjectionToken, container } from "tsyringe";
import { RestTask } from "./RestTask";
import { HealthTask } from "./HealthTask";


export interface ITask {
    name: string;
    title: string;
    order: number;

    /**
     * @description: 延迟执行的时间，单位毫秒（默认为 0）。
     */
    delay?: number;
    /**
     * @description: 循环运行次数（默认为 1 ），0 为无限循环。
     */
    loopTimes?: number;

    /**
     * @description: 循环运行时两次运行之间的时间间隔，单位毫秒（默认为 0）。
     */
    interval?: number;

    canRun(): boolean;
    isFinishSign(event: string): boolean;
    finish(uuid: string): Promise<any>;
    getCode(): Promise<any>;
    start(payload: {uuid: string, event: string}): any;
}
export const TASK_TOKEN: InjectionToken<ITask> = `TASK_TOKEN`;


/**
 * 获取任务
 */
container.register(TASK_TOKEN, { useClass: RestTask })
container.register(TASK_TOKEN, { useClass: HealthTask })
